home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Precision Software Appli…tions Silver Collection 1
/
Precision Software Applications Silver Collection Volume One (PSM) (1993).iso
/
windows
/
games
/
bug.arj
/
BUG.C
< prev
next >
Wrap
Text File
|
1988-06-11
|
5KB
|
162 lines
/* Windows Program
(C) 1987 C.C.Ryder. Centaur Software Ltd
c/bug/..../*
*/
#include <windows.h>
#include <string.h>
#include <stdlib.h>
#include "bug.h"
#define BUFLEN 80
long FAR PASCAL bugWndProc( HWND, unsigned, WORD, LONG );
BOOL bugInit( HANDLE);
HANDLE hInst;
char szClass[BUFLEN]; /* Class Name */
int nTimerID;
HANDLE hBug;
int TimeCount=0;
int MaxX,MaxY;
#define NEWX (rand()/(32767/MaxX))
#define NEWY (rand()/(32767/MaxY))
/* RANDVAL(MaxValue,MinValue) */
#define RANDVAL(X,Y) ((rand()/(32767/(X-Y)))+Y)
#define BUGTIME 1000
WORD hOldCur;
HWND hBuggedWin = NULL;
/* Initializtaion of main program
*/
BOOL bugInit( hInstance)
HANDLE hInstance;
{
PWNDCLASS bugClass;
LoadString( hInstance, IDS_APPNAME, (LPSTR)szClass, BUFLEN );
if ((bugClass = (PWNDCLASS)LocalAlloc( LPTR, sizeof(WNDCLASS))) == (PWNDCLASS)NULL)
return(FALSE);
bugClass->lpszClassName = (LPSTR)szClass;
bugClass->hbrBackground = (HBRUSH)COLOR_WINDOW+1;
bugClass->style = CS_VREDRAW | CS_HREDRAW;
bugClass->hInstance = hInstance;
bugClass->lpfnWndProc = bugWndProc;
hBug = LoadCursor( hInstance, (LPSTR)"bugger" );
bugClass->hCursor = hBug;
if (!RegisterClass( (LPWNDCLASS)bugClass ) ) {
LocalFree( (HANDLE)bugClass );
return (FALSE);
}
LocalFree( (HANDLE)bugClass );
return (TRUE);
}
long FAR PASCAL bugWndProc( hWnd, message, wParam, lParam)
HWND hWnd;
unsigned message;
WORD wParam;
LONG lParam;
{
static POINT p;
switch (message) {
case WM_DESTROY:
PostQuitMessage( 0 );
break;
case WM_SETFOCUS:
ShowWindow( hWnd, SW_HIDE );
break;
case WM_TIMER:
if (--TimeCount == 0) {
MessageBeep(MB_OK);
if (hBuggedWin != NULL) {
SetClassWord(hBuggedWin,GCW_HCURSOR,hOldCur);
}
SetCursorPos( NEWX,
NEWY);
SetCursor(hBug);
GetCursorPos((LPPOINT)&p);
hBuggedWin = WindowFromPoint(p);
hOldCur = SetClassWord(hBuggedWin,GCW_HCURSOR,hBug);
TimeCount = RANDVAL(10,1);
if (TimeCount == 10) {
TimeCount = 200; /* hide */
if (hBuggedWin != NULL) {
SetClassWord(hBuggedWin,GCW_HCURSOR,hOldCur);
}
}
}
break;
default:
return( DefWindowProc(hWnd, message, wParam, lParam) );
}
return( 0L );
}
int PASCAL WinMain (hInstance, hPbug, lpszCmdLine, cmdShow)
HANDLE hInstance, hPbug;
LPSTR lpszCmdLine;
int cmdShow;
{
HWND hWnd;
MSG msg;
if (!hPbug) {
if (!bugInit( hInstance ))
return FALSE;
}
else
return FALSE;
hWnd = CreateWindow(
(LPSTR)szClass, /* The class name */
(LPSTR)NULL, /* The window instance name */
WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT, 0, CW_USEDEFAULT, 0,
(HWND)NULL,
(HMENU)NULL, /*null parent window parm*/
(HANDLE)hInstance,
(LPSTR)NULL
);
hInst = hInstance;
MaxX = GetSystemMetrics(SM_CXSCREEN);
MaxY = GetSystemMetrics(SM_CYSCREEN);
/* any other non standard window related inits here */
hBuggedWin = NULL;
srand(1);
TimeCount = RANDVAL(10,1);
nTimerID = SetTimer(hWnd,IDS_TIMER,BUGTIME,(FARPROC)NULL);
ShowWindow( hWnd, SW_HIDE );
UpdateWindow(hWnd);
while (GetMessage( (LPMSG)&msg, NULL, 0, 0)){
TranslateMessage( (LPMSG)&msg );
DispatchMessage( (LPMSG)&msg );
}
/* any closing down here */
KillTimer(hWnd,IDS_TIMER);
exit( msg.wParam );
}